import {Ref} from "vue";

/**
 * 获取路径中的最后一个路径段。
 * @param path 要提取路径段的路径字符串。
 * @returns 最后一个路径段。
 */
function getLastPathSegment(path: string): string {
    const segments = path.split('/').filter(segment => segment !== '');

    // 如果路径只有一个路径段，则直接返回整个路径
    if (segments.length === 1) {
        return path;
    }

    // 获取最后一个路径段
    const lastSegment = segments[segments.length - 1];

    // 如果路径以斜杠结尾，并且路径段数量大于1，则返回最后一个路径段加上斜杠
    if (segments.length > 1 && path.endsWith('/')) {
        return lastSegment + '/';
    }

    // 否则，返回最后一个路径段
    return lastSegment;
}

/**
 * 获取第一个表格的可视化高度
 * @param {number} extraHeight 额外的高度(表格底部的内容高度 Number类型,默认为74)
 * @param {Ref | null} ref Table所在的组件的ref
 */
function getTableScroll({ extraHeight = 114, ref = null as Ref<HTMLElement> | null | any } = {}){
    let tHeader = null;
    if (ref) {
        tHeader = ref.$el.getElementsByClassName("ant-table-thead")[0];
    } else {
        tHeader = document.getElementsByClassName("ant-table-thead")[0];
    }

    // 表格内容距离顶部的距离
    let tHeaderBottom = 0;
    if (tHeader) {
        tHeaderBottom = tHeader.getBoundingClientRect().bottom;
    }

    // 窗体高度-表格内容顶部的高度-表格内容底部的高度
    let height = `calc(100vh - ${tHeaderBottom + extraHeight}px)`;

    // 空数据的时候表格高度保持不变，暂无数据提示文本图片居中
    if (ref && ref.value && tHeader) {
        let placeholder = ref.value.getElementsByClassName(
            "ant-table-placeholder"
        )[0] as HTMLElement | null;
        if (placeholder) {
            placeholder.style.height = height;
            placeholder.style.display = "flex";
            placeholder.style.alignItems = "center";
            placeholder.style.justifyContent = "center";
        }
    }

    return height;
}


export {
    getLastPathSegment,
    getTableScroll
}